package com.wiscamp.ninechapters.problems.domain.models.problems.questions;

import com.wiscamp.ninechapters.problems.domain.models.problems.answers.Answer;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.ArrayList;
import java.util.Collection;

/**
 * 填空问题
 * 填空题型-整数
 * 填空题型-商及余数
 * 填空题型-分数
 * 填空题型-有限小数
 * 填空题型-有限小数(尾数0)
 * 填空题型-循环小数
 * 填空题型-百分数
 * 填空题型-根数
 * 填空题型-求解绝对值
 * 填空题型-整数数值范围
 * 填空题型-有理数数值范围
 * 填空题型-加减法运算表达式
 * 填空题型-加减法运算等式
 * 填空题型-加减法运算不等式
 * 填空题型-乘除法运算表达式
 * 填空题型-乘除法运算等式
 * 填空题型-乘除法运算不等式
 * 填空题型-算术运算表达式
 * 填空题型-算术运算等式
 * 填空题型-算术运算不等式
 * 填空题型-包含未知数的不等式
 * 填空题型-包含未知数的等式
 * 填空题型-简化表达式
 * 填空题型-文本
 * 填空题型-小时时间
 * 填空题型-分钟时间
 * 填空题型-秒时间
 * 填空题型-年月日
 * 填空题型-月日年
 * 填空题型-算术运算比较式
 * 填空题型-无序有理数
 * 填空题型-升序有理数
 * 填空题型-降序有理数
 * 填空题型-比较运算符
 * 填空题型-四则运算符
 * 填空题型-混合答案模式
 * 填空题型-括号补全
 * 填空题型-长度计量单位
 * 填空题型-面积计量单位
 * 填空题型-重量计量单位
 * 填空题型-体积计量单位
 * 填空题型-容积计量单位
 * 填空题型-计量单位升序排序
 * 填空题型-计量单位倒序排序
 * 填空题型-升序文本排序
 * 填空题型-倒序文本排序
 * 填空题型-无序文本排序
 * 填空题型-比
 * 填空题型-比例
 * 填空题型-比值
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class CompletionQuestion extends Question {
    /**
     * 答案列表
     * 如果问题为单空填空，则列表仅仅包含一个答案
     * 如果问题为多空填空，则列表仅仅包含多个答案
     */
    private Collection<Answer> answers = new ArrayList<>();

    public CompletionQuestion() {
        this.hasMultipleAnswers = true;
    }

    @Override
    public void setCurrentAnswers(Collection<Answer> answers) {
        this.answers = answers;
    }

    @Override
    public Collection<Answer> getCurrentAnswers() {
        return this.answers;
    }
}
